package com.swmutil.swmutil.util;

import com.fazecast.jSerialComm.SerialPort;

/**
 * @author 师文明
 * @data 2024/10/23 下午1:52
 **/

public class SerialExample {
    public static void main(String[] args) {
        // 列出所有可用的串口
        SerialPort[] commPorts = SerialPort.getCommPorts();
        for (SerialPort port : commPorts) {
            System.out.println(port.getSystemPortName());
        }

        // 假设你要连接的是第一个可用的串口
        if (commPorts.length > 0) {
            SerialPort serialPort = commPorts[0];
            try {
                serialPort.openPort(); // 打开串口
                serialPort.setComPortParameters(9600, 8, 1, 0); // 设置串口参数（波特率、数据位、停止位、校验方式）
                serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0); // 设置超时

                // 发送数据
                String message = "你要发送的数据";
                byte[] messageToSend = message.getBytes();
                serialPort.writeBytes(messageToSend, messageToSend.length);

                // 读取响应
                byte[] buffer = new byte[1024];
                int bytesRead = serialPort.readBytes(buffer, buffer.length);
                if (bytesRead > 0) {
                    String response = new String(buffer, 0, bytesRead);
                    System.out.println("Received: " + response);
                }

                serialPort.closePort(); // 关闭串口
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
